/*
 * Created on Mar 27, 2006
 *
 */
package ar.edu.utn.frba.gdaia.src.junittest.CombinarReglas;


import java.util.Date;

import junit.framework.Test;
import junit.framework.TestSuite;
import ar.edu.utn.frba.gdaia.src.domain.Canal;
import ar.edu.utn.frba.gdaia.src.domain.ConceptoElemental;
import ar.edu.utn.frba.gdaia.src.domain.Regla;
import ar.edu.utn.frba.gdaia.src.domain.Situacion;
import ar.edu.utn.frba.gdaia.src.main.GDAIA;
import ar.edu.utn.frba.gdaia.src.test.TestSetup;
import ar.edu.utn.frba.gdaia.src.util.ListBuilder;


/**
 * @author Fernando
 *
 */
public class TestsCombinarReglas {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		junit.swingui.TestRunner.run(TestsCombinarReglas.class);
	}

	/**
	 * @return a 
	 */
	public static Test suite() {
		TestSetup.main(null);
		System.out.println("Iniciando Suite de Test: Combinar Reglas");
		TestSuite suite = new TestSuite();
		// $JUnit-BEGIN$

		GDAIA gdaia = new GDAIA();
		gdaia.setCerebro(gdaia.generateCerebroFromXML());

		/*
		TextInterface gui = new ConcreteGUIInterface();
		gdaia.setInterfaceGUI(gui);
		Thread tgui = new Thread(new Ventana(gui));
		tgui.run();
		*/

		// Preparamos las variables assert a comparar
		ConceptoElemental assertConcepto1 = new ConceptoElemental(1, "1", Canal.TECLADO);
		ConceptoElemental assertConcepto2 = new ConceptoElemental(2, "2", Canal.TECLADO);
		ConceptoElemental assertConcepto3 = new ConceptoElemental(3, "3", Canal.TECLADO);

		Situacion assertSituacion1 = new Situacion(new ListBuilder().add(assertConcepto1).get(), Canal.INT_MAKE_PRESENT_SIT);
		Situacion assertSituacion2 = new Situacion(new ListBuilder().add(assertConcepto2).get(), Canal.INT_MAKE_PRESENT_SIT);
		Situacion assertSituacion3 = new Situacion(new ListBuilder().add(assertConcepto3).get(), Canal.INT_MAKE_PRESENT_SIT);
		
		Regla assertRegla1 = new Regla(-1, null, new Date(),assertSituacion1, null, assertSituacion2, Canal.INT_COMBINAR_REGLAS);
		Regla assertRegla2 = new Regla(-1, null, new Date(),assertSituacion2, null, assertSituacion3, Canal.INT_COMBINAR_REGLAS);
		Regla assertRegla3 = new Regla(-1, null, new Date(),assertSituacion1, assertSituacion2, assertSituacion3, Canal.INT_COMBINAR_REGLAS);
		
		// LearnRule: 1 -> 2
		LearnRuleCommandTest learnRuleCommandTestNew = new LearnRuleCommandTest("testExecute", gdaia, assertSituacion1, assertSituacion2, assertRegla1);
		suite.addTest(learnRuleCommandTestNew);
		
		// LearnRule: 2 -> 3
		learnRuleCommandTestNew = new LearnRuleCommandTest("testExecute", gdaia, assertSituacion2, assertSituacion3, assertRegla2);
		suite.addTest(learnRuleCommandTestNew);
		
		CombinarReglasCommandTest combinarReglasCommandTestDormido = new CombinarReglasCommandTest("testExecute", gdaia, assertRegla3);
		suite.addTest(combinarReglasCommandTestDormido);
	
		gdaia.generateXMLForCerebro(gdaia.getCerebro());
		System.out.println("Fin Nuevo Suite de Test");

		// $JUnit-END$
		return suite;
	}
}
